﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using PortalMainService.Persistencia;
using PortalMainService;
using PortalMainService.Dominio;

namespace PortalMainService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Cursos" in code, svc and config file together.
    public class Cursos : ICursos
    {

        CursoAvService.CursoAvServiceClient CursoAv = new CursoAvService.CursoAvServiceClient();

        private PortalMainService.Dominio.Curso Av_to_Portal(CursoAvService.Curso curso)
        {
            PortalMainService.Dominio.Curso CursoPortal = new Curso { id = curso.id, nombre = curso.nombre, tipo = curso.tipo, duracionHoras = curso.duracionHoras, preRequisito = curso.preRequisito };
            return CursoPortal;
        }


        private CursoDAO Curso = null;
        private CursoDAO CursoDAO
        {
            get
            {
                if (this.Curso == null)
                {
                    this.Curso = new CursoDAO();
                }
                return this.Curso;
            }
        }


        public Dominio.Curso obtenerCurso(int id)
        {
            
            Curso curso = CursoDAO.Obtener(id);
            return curso;

        }

       

        public Dominio.Curso modificarCurso(int id, string nombre, string tipo, string resposable, int duracionHoras, string preRequisito)
        {
            Dominio.Curso curso = this.obtenerCurso(id);
            if (curso != null)
            {
                curso.nombre = nombre;
                curso.tipo = tipo;
                curso.responsable = resposable;
                curso.duracionHoras = duracionHoras;
                curso.preRequisito = preRequisito;
                curso = this.CursoDAO.Crear(curso);
            }
            return curso;

        }

    

        public List<Curso> listarCursos()
        {

            List<PortalMainService.Dominio.Curso> listaCursoPortal = CursoDAO.ListarTodos().ToList();

            List<CursoAvService.Curso> listaCursosAv = CursoAv.listarCursos().ToList();

            List<PortalMainService.Dominio.Curso> listaPortalfin = new List<PortalMainService.Dominio.Curso>();

            foreach (PortalMainService.Dominio.Curso element in listaCursoPortal)
            {
                listaPortalfin.Add(element);
            }

            foreach (CursoAvService.Curso element in listaCursosAv)
            {
                int b = 0;

                foreach (PortalMainService.Dominio.Curso elemento in listaPortalfin)

                    if (element.id == elemento.id)
                    {
                        b = b + 1;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                if (b == 0)
                {
                    listaPortalfin.Add(Av_to_Portal(element));
                }

            }
            return listaPortalfin;
        }
    }
}
